package com.freemalll.system.mapper;

import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.freemalll.system.domain.SysAccount;

/**
 * 系统账户 数据层
 * 
 * @author freemalll
 */
public interface SysAccountMapper extends BaseMapper<SysAccount>
{
    /**
     * 查询系统账户信息
     * 
     * @param account 系统账户信息
     * @return 系统账户信息
     */
    public SysAccount selectAccount(SysAccount account);

    /**
     * 通过ID查询账户
     * 
     * @param id 账户ID
     * @return 系统账户信息
     */
    public SysAccount selectAccountById(String id);

    /**
     * 查询系统账户列表
     * 
     * @param account 系统账户信息
     * @return 系统账户集合
     */
    public List<SysAccount> selectAccountList(SysAccount account);

    /**
     * 根据登录名称查询账户信息
     * 
     * @param accountId 登录名称
     * @return 系统账户信息
     */
    public SysAccount selectAccountByAccountId(String accountId);

    /**
     * 根据手机号查询账户信息
     * 
     * @param mobile 手机号
     * @return 系统账户信息
     */
    public SysAccount selectAccountByMobile(String mobile);

    /**
     * 根据身份证号查询账户信息
     * 
     * @param idCard 身份证号
     * @return 系统账户信息
     */
    public SysAccount selectAccountByIdCard(String idCard);

    /**
     * 根据唯一标识查询账户信息
     * 
     * @param unionid 唯一标识
     * @return 系统账户信息
     */
    public SysAccount selectAccountByUnionid(String unionid);

    // 使用 MyBatis-Plus 的 BaseMapper 方法，不需要自定义 insert 和 update
    // insert(account) 和 updateById(account) 方法自动可用

    /**
     * 删除系统账户
     * 
     * @param id 账户ID
     * @return 结果
     */
    public int deleteAccountById(String id);

    /**
     * 批量删除系统账户
     * 
     * @param ids 需要删除的账户ID
     * @return 结果
     */
    public int deleteAccountByIds(String[] ids);

    /**
     * 校验登录名称是否唯一
     * 
     * @param accountId 登录名称
     * @return 结果
     */
    public int checkAccountIdUnique(String accountId);

    /**
     * 校验手机号是否唯一
     * 
     * @param mobile 手机号
     * @return 结果
     */
    public int checkMobileUnique(String mobile);

    /**
     * 校验身份证号是否唯一
     * 
     * @param idCard 身份证号
     * @return 结果
     */
    public int checkIdCardUnique(String idCard);

    /**
     * 校验唯一标识是否唯一
     * 
     * @param unionid 唯一标识
     * @return 结果
     */
    public int checkUnionidUnique(String unionid);
}